﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Mvc;

namespace ProjectFitus.Models
{
	//á þessi ekki að fara út?
	public interface IDBFitusNewsRepository
	{

		#region subpages functions

		SubSite GetSubsiteByTitle(string strTitle);

		SubSite GetSubsiteById(int subSiteId);

		void UpdateSubSite(SubSite editedSubSite, int subSiteId);


		#endregion

		#region Article functions

		void addArticle(ArticleContent article);

		IEnumerable<ArticleContent> GetAllArticles();

		ArticleContent GetArticleById(long id);


		#endregion

		#region News functions

		void AddNews(NewsContent news);

		IEnumerable<NewsContent> GetNewsByCategoryId(int id);

		IEnumerable<NewsContent> GetNews(int count);

		IEnumerable<NewsContent> GetAllNews();

		NewsContent GetNewsById(long id);

		void UpdateNews(NewsContent editedNews);


		#endregion


		#region User functions

		long GetUserIdByAspNetUsrId(Guid aspNetUserId);

		User GetUserById(long usrId);

		// Add new User
		void AddNewUser(string usr, string email);

        void UpdateUser(User usr);


		#endregion


		#region Profession functions

		IEnumerable<ProfessionListItem> GetAllProfessions();

		List<SelectListItem> GetAllProfessionsViaSelectList();


		#endregion

		#region Specialist functions

		Specialist GetSpecialistById(long id);

		IEnumerable<Specialist> GetAllSpecialists();

		void InsertNewSpecialist(Specialist specs);

		void UpdateSpecialist(Specialist specs);

		#endregion

		#region Request functions

		IEnumerable<Request> GetAllRequests();

		Request GetRequestById(long id);


		void CreateRequest(Request req);

		void UpdateRequest(Request req);

		IEnumerable<Request> Get_n_MostRecentRequestsAtPage_p(int n, int p);
		#endregion

		#region AssignmentStatusList functions

		List<SelectListItem> GetAllStatusNamesViaSelectList();


		#endregion
	}
}
